package com.ray.bean;

import com.ray.util.IntegerUtil;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

@ToString
@Getter
public class MachineBean {
    /**
     *主键
     */
    @Setter
    private String id;
    /**
     *设备编号
     */
    @Setter
    private String equipmentNo;
    /**
     *设备名称
     */
    @Setter
    private String equipmentName;
    /**
     *状态0警报 1待机 2运行 3离线
     */
    @Setter
    private int state;
    /**
     *订单编号
     */
    @Setter
    private String orderNo;
    /**
     *产量
     */
    @Setter
    private int yield;
    /**
     *时间
     */
    @Setter
    private String time;
    /**
     *公司
     */
    @Setter
    private String company;
    /**
     *标签
     */
    @Setter
    private String lable;
    /**
     *采集状态 采集状态 0.不采集 1.采集
     */
    @Setter
    private int action;
    /**
     *图片路径
     */
    @Setter
    private String url;
    /**
     *部门id
     */
    @Setter
    private String departmentId;
    /**
     *部门名称
     */
    @Setter
    private String departmentName;
    /**
     *车间id
     */
    @Setter
    private String workShopId;
    /**
     * 车间名称
     */
    @Setter
    private String workShopName;
    /**
     *系统设置的状态 0 常闭 1常开
     */
    @Setter
    private int equipmentAction;
    /**
     *工厂型号
     */
    @Setter
    private String factoryId;
    /**
     *用电量
     */
    @Setter
    private Double useElectric;
    /**
     * 系统订单
     */
    @Setter
    private String orderId;
    /**
     *系统设置的加工单号
     */
    @Setter
    private String systemOrderNo;
    /**
     *调机数
     */
    @Setter
    private Double adjustingMachineCount;
    /**
     *换单时加工数量
     */
    @Setter
    private Double changeCount;
    /**
     *换单时用电数量
     */
    @Setter
    private Double changeDegee;
    /**
     *断电标志位0代表断电，1代表通电
     */
    @Setter
    private Integer breakElectricity;
    /**
     *断气标志位，0代表断气，1代表通气
     */
    @Setter
    private Integer breakFlow;
    /**
     * 机器运行开关
     */
    private String mainSwitch;
    /**
     *是否打开手动操作设备0代表关闭，1代表打开
     */
    private int isHandOperation;
    /**
     *设备待机超时断电时间，以秒为单位
     */
    private int timeoutBreakElectricityTime;
    /**
     *设备待机超时断气时间，以秒为单位
     */
    private int timeoutBreakFlowTime;
    /**
     *设备加工工序及设备工序对应最大加工时间
     */
    private List<MachineRelationProcessBean> machineRelationProcesses;
    /**
     *设备工作时间区间
     */
    private List<TemporalIntervalBean> workTemporalIntervals;

    /**
     * 设置机器运行开关
     */
    public MachineBean setMainSwitch(String mainSwitch) {
        this.mainSwitch = mainSwitch;
        return this;
    }

    /**
     *设置是否打开手动操作机器 0代表关闭，1代表打开
     */
    public MachineBean setIsHandOperation(String isHandOperation) {
        this.isHandOperation = IntegerUtil.parseInteger(isHandOperation);
        return this;
    }

    /**
     *机器待机超时断电时间，以秒为单位
     */
    public MachineBean setTimeoutBreakElectricityTime(
            String timeoutBreakElectricityTime) {
        this.timeoutBreakElectricityTime = IntegerUtil
                .parseInteger(timeoutBreakElectricityTime);
        return this;
    }

    /**
     *设置机器待机超时断气时间，以秒为单位
     */
    public MachineBean setTimeoutBreakFlowTime(String timeoutBreakFlowTime) {
        this.timeoutBreakFlowTime = IntegerUtil
                .parseInteger(timeoutBreakFlowTime);
        return this;
    }
    /**
     *设置机器加工工序及设备工序对应最大加工时间
     */
    public MachineBean setMachineRelationProcesses(
            List<MachineRelationProcessBean> machineRelationProcesses) {
        this.machineRelationProcesses = machineRelationProcesses;
        return this;
    }
    /**
     *机器是否处于警报状态
     */
    public boolean isAlarm() {
        return this.state == 0;
    }
    /**
     *机器是否处于待机状态
     */
    public boolean isStandby() {
        return this.state == 1;
    }
    /**
     *机器是否处于运行状态
     */
    public boolean isRun() {
        return this.state == 2;
    }
    /**
     *机器是否处于离线状态
     */
    public boolean isOffLine() {
        return this.state == 3;
    }
    /**
     *机器手动操作是否打开
     */
    public boolean isHandOperationing() {
        return this.isHandOperation == 1;
    }
    /**
     *机器开关是否打开
     */
    public boolean switchIsOpen() {
        return this.mainSwitch.equals("ON");
    }
    /**
     *打开机器开关
     */
    public void openMachine() {
        this.mainSwitch = "ON";
    }
    /**
     *关闭机器开关
     */
    public void closeMachine() {
        this.mainSwitch = "OFF";
    }
}
